package com.javandad.app.client.project;


import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.javandad.app.shared.entity.User;
import com.javandad.app.shared.entity.project.Post;
import com.javandad.app.shared.entity.project.Project;
import com.javandad.app.shared.entity.project.ProjectAssoc;


public interface ProjectServiceAsync {

	void getProjects(String username, int level, AsyncCallback<List<Project>> callback);

	void getUsers(String projectname, int level, AsyncCallback<List<User>> callback);

	void getUser(AsyncCallback<User> callback);
	
	
	void uploadPost(Post post, AsyncCallback<Post> callback);
	

	void downloadPosts(String projectName, String username, int level,
			int count, AsyncCallback<List<Post>> callback);

	void sendParticipationInvitation(String projectName, String username,
			AsyncCallback<Boolean> callback);

	void getThisAssociationAmongAllIncludingUnconfirmedInvitations(
			String projectName, String text, int participatnigProject,
			AsyncCallback<ProjectAssoc> asyncCallback);

	void removeParticipation(String projectName, String username,
			AsyncCallback<Boolean> callback);

	

	void getSessionInfo(String projectName, AsyncCallback<List<String>> callback);

	void getProject(String projectName, AsyncCallback<Project> callback);


	void followProject(String projectName, String username, boolean what,
			AsyncCallback<Boolean> callback);

	void getProjectAssociations(String username, int level,
			AsyncCallback<List<ProjectAssoc>> callback);

	void createProject(String username, int level, String projectname,
			int type, String description, String plink, String rlink,
			AsyncCallback<Boolean> callback);




}
